% -*- coding:utf-8 -*-

\section{Especificación del Lenguaje de entrada}
\label{sec:lenguaje}
\subsection{Descripción \emph{EBNF}}
\label{subsec:ebnf}
A continuación se muestra la descripción \emph{EBNF} de nuestro
lenguaje de entrada.

\lstset{
        basicstyle=\small,
        tabsize=2,
        commentstyle=\color{blue},
        keywordstyle=\bfseries,
        identifierstyle=\ttfamily,
        breaklines,
        captionpos=t,
        showstringspaces=false,
        extendedchars=true,
        frame=trBL,
	frameround=shadowbox
        xleftmargin=1.0cm,
        xrightmargin=0.5cm,
      }

\lstinputlisting[numbers=left]{./snippets/ebnf.txt}
\begin{lst}
\label{lst:ebnf}
\caption{Descripción EBNF del lenguaje de entrada.}
\end{lst}
\par

El lenguaje define tres bloques principales, a saber:
\begin{itemize}
\item{\textbf{HOST}: Define los \emph{hosts} y los equipos que forman
    parte de la red a mostrar. Se pueden definir múltiples interfaces
    de red, las direcciones IP de cada una de éstas y la MAC, entre
    otras.}
\item{\textbf{ROUTER}: Define los distintos routers y pasarelas que
    puede haber entre distintas redes. Al igual que en el caso de los
    \emph{hosts}, se pueden definir múltiples interfaces (obligatorio
    para éste tipo de dispositivos), así como sus direcciones y el
    estado de cada una de las interfaces.}
\item{\textbf{NETWORK}: Definiciones de redes. Consta básicamente
    del nombre de la subred y el tipo.}
\end{itemize}
Se pueden definir tantos hosts, routers y redes como se deseen,
siendo obligatorio definir al menos un host y una red.

\subsection{Definición de la semántica en lenguaje natural}
\label{subsec:natural}
Como se ha comentado anteriormente, pueden definirse tantos hosts,
redes y routers como queramos, siendo obligatorio al menos un host y
una red.\\
Dentro de la definición de un host, después del nombre se pasa a
definir las interfaces y las direcciones que se le asociará a cada una
de las interfaces. A continuación, se definen las rutas, que consiste
en asignar cada una de las interfaces a las redes que habrá
disponibles.
Para el caso de los routers, el proceso es muy similar: se definen las
interfaces de red, con sus direcciones MAC e IP (y el estado de las
interfaces, que pueden estar levantadas o caídas) y después se asocian
dichas interfaces a las distintas redes.\\
Para el caso de las redes, solo se definen el nombre, el tipo de red
(una nube representando Internet, wifi, ethernet, ppp, etc...) el MTU,
la dirección de red y la máscara.
